package com.atguigu.tingshu.search.test;

import org.springframework.stereotype.Component;

import java.util.concurrent.CompletableFuture;


public class Demo {
    public static void main(String[] args) {
        //supplyAsync:使用一个线程执行操作，返回结果
        CompletableFuture<Integer> completableFuture1 = CompletableFuture.supplyAsync(() -> {
            System.out.println("1");
            return 1024;
        });

        //runAsync：使用一个线程执行操作，不返回结果
        CompletableFuture<Void> completableFuture2 = CompletableFuture.runAsync(() -> {
            System.out.println("2");
        });


        //thenAcceptAsync:上一个线程执行完成后，才能执行当前操作
        //获取上一个线程的执行结果，进行操作
        CompletableFuture<Void> completableFuture3 = completableFuture1.thenAcceptAsync(value -> {
            System.out.println("3 " + value);
        });

        // 等待所有线程执行完成之后，进行汇总
        CompletableFuture.allOf(
                completableFuture1,
                completableFuture2,
                completableFuture3
        ).join();

    }
}
